package jp.seraph.same.model;

import jp.seraph.jspf.pose.Pose;

/**
 * このインターフェースが持つメソッドのうち、PoseModelを返り値とするメソッドの実装には注意しなければならない。
 * それらのメソッドが返したModelへの変更が、コレクション内のポーズに影響を与えてはならない。
 * コレクション内のポーズを変更する場合は、setPoseメソッドで明示的に上書きをすべきである
 * 
 */
public interface PoseCollectionModel {
    public int getPoseCount();

    public String getPoseName(int aIndex);

    public PoseModel getPose(String aPoseName);

    public PoseModel getPose(int aIndex);

    public void setPose(String aPoseName, PoseModel aPose);

    public void setPose(String aPoseName, Pose aPose);

    public void removePose(String aPoseName);

    public void selectPose(String aPoseName);

    public void selectPose(int aIndex);

    public String getSelectedPoseName();

    public PoseModel getSelectedPose();

    public void addListener(PoseCollectionModelListener aListener);

    public boolean removeListener(PoseCollectionModelListener aListener);
}
